memset(hl2, 0, PAGE_SIZE);
unmap_domain_mem(hl2);
- // install this hl2 as the linear_pg_table
- if ( shadow_mode_external(d) )
- ed->arch.monitor_vtable[l2_table_offset(LINEAR_PT_VIRT_START)] =
- mk_l2_pgentry((hl2mfn << PAGE_SHIFT) | __PAGE_HYPERVISOR);
- else
- ed->arch.shadow_vtable[l2_table_offset(LINEAR_PT_VIRT_START)] =
- mk_l2_pgentry((hl2mfn << PAGE_SHIFT) | __PAGE_HYPERVISOR);
-
return status;
}
struct host_execution_env host_env;
struct Xgt_desc_struct desc;
struct list_head *list_ent;
- l2_pgentry_t *mpl2e, *hl2_vtable;
unsigned long i, pfn = 0;
struct pfn_info *page;
execution_context_t *ec = get_execution_context();
spin_lock(&d->page_alloc_lock);
list_ent = d->page_list.next;
- mpl2e = (l2_pgentry_t *)map_domain_mem(pagetable_val(ed->arch.monitor_table));
-
for ( i = 0; list_ent != &d->page_list; i++ )
{
pfn = list_entry(list_ent, struct pfn_info, list) - frame_table;
page = (struct pfn_info *) alloc_domheap_page(NULL);
pfn = (unsigned long) (page - frame_table);
- /*
- * make linear_pt_table work for guest ptes
- */
- mpl2e[LINEAR_PT_VIRT_START >> L2_PAGETABLE_SHIFT] =
- mk_l2_pgentry((pfn << PAGE_SHIFT)| __PAGE_HYPERVISOR);
-
- hl2_vtable = map_domain_mem(pfn << PAGE_SHIFT);
- memset(hl2_vtable, 0, PAGE_SIZE); /* clean it up */
- ed->arch.hl2_vtable = hl2_vtable;
-
- unmap_domain_mem(mpl2e);
-
vmx_setup_platform(ed, ec);
__asm__ __volatile__ ("sgdt (%%eax) \n" :: "a"(&desc) : "memory");